
#include <iostream>
#include <string.h>
#include <unistd.h>

using namespace std;


template<typename T>
const T& mymax(const T& a, const T& b)
{
	cout<<"1. " << __PRETTY_FUNCTION__ <<endl;
	return	(a < b)? b : a;
}

template<typename T>
 T& mymax( T& a,  T& b)
{
	cout<<"1. " << __PRETTY_FUNCTION__ <<endl;
	return	(a < b)? b : a;
}

 int& mymax( int& a,  int& b)
 {
	 cout<<"1. " << __PRETTY_FUNCTION__ <<endl;
	 return  (a < b)? b : a;
 }



int main(int argc , char **argv)
{	
	int ia = 1;
	int ib = 2;
	cout << mymax(ia, ib) << endl;

	int *p1 = &ia ;
	int *p2 = &ib ;

	cout << mymax(p1, p2) << endl;
	
	return 0;
}













